package com.coolt.client;

import com.coolt.client.model.Comunidade;
import com.coolt.client.model.Item;
import com.coolt.client.model.Usuario;
import com.google.gwt.core.client.GWT;
import com.google.gwt.i18n.client.LocaleInfo;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Hyperlink;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;

public class Util {

	private Combos combosConstants = GWT.create(Combos.class);

	public static HorizontalPanel tituloFramesHome(String titulo) {

		HorizontalPanel hp = new HorizontalPanel();
		hp.setWidth("100%");
		hp.setHorizontalAlignment(HorizontalPanel.ALIGN_CENTER);
		hp.setSpacing(5);
		hp.add(new Label("::: " + titulo.toUpperCase() + " :::"));
		hp.setStyleName("tituloFramesInicio");
		return hp;
	}

	public static HorizontalPanel tituloFrames(String titulo) {

		HorizontalPanel hpExterno = new HorizontalPanel();
		HorizontalPanel hpInterno = new HorizontalPanel();
		hpExterno.setWidth("100%");
		hpExterno.setStyleName("tituloFrames");
		hpExterno.setHorizontalAlignment(HorizontalPanel.ALIGN_LEFT);

		hpInterno.setVerticalAlignment(VerticalPanel.ALIGN_MIDDLE);
		hpInterno.setStyleName("tituloFrames");
		hpInterno.add(new Image("img/seta_roxa.gif"));
		hpInterno.add(new Label(" "));
		hpInterno.add(new Label(titulo));
		hpExterno.add(hpInterno);

		return hpExterno;
	}

	public VerticalPanel itemImageNome(Item item) {

		VerticalPanel vp = new VerticalPanel();

		vp.setSpacing(5);
		vp.setWidth("100");
		vp.setHorizontalAlignment(HorizontalPanel.ALIGN_CENTER);
		Image imgitem = new Image(item.getImgitem());
		imgitem.setSize("62", "85");
		imgitem.setTitle(converteNomeTipoItem(item.getCdtipoitem()));
		vp.add(imgitem);
		String titulo = Util.cortaString(Util.tituloItem(item), 25);
		Hyperlink link = new Hyperlink(titulo, "main");
		link.setStyleName("linkItem");

		vp.add(link);

		link.addClickListener(new ClickListener() {
			public void onClick(Widget sender) {

				Window.alert("teste");
			}
		});

		return vp;
	}

	private String converteNomeTipoItem(int tipoitem) {

		switch (tipoitem) {
		case Item.TIPOITEM_FILMES:
			return combosConstants.tipoItemMovie();
		case Item.TIPOITEM_LIVROS:
			return combosConstants.tipoItemBook();
		case Item.TIPOITEM_SHOWS:
			return combosConstants.tipoItemShow();

		default:
			return combosConstants.tipoItemMovie();
		}

	}

	public static String tituloItem(Item item) {

		String titulo = item.getTitulo_original();
		if (LocaleInfo.getCurrentLocale().getLocaleName().equals("en")) {
			if (item.getTitulo_english() != null
					&& !(item.getTitulo_english().equals(""))) {
				titulo = item.getTitulo_english();
			}
		} else {
			if (item.getNmitem() != null && !(item.getNmitem().equals(""))) {
				titulo = item.getNmitem();
			}
		}

		if (titulo == null || titulo.equals("")) {
			titulo = item.getNmitem();
		}
		return titulo;
	}

	public static String cortaString(String str, int size) {

		if (str != null && str.length() > size) {
			str = str.substring(0, size) + "...";
		}
		return str;
	}

	public static VerticalPanel comunidadeImageNome(Comunidade comunidade) {

		VerticalPanel vp = new VerticalPanel();

		vp.setSpacing(5);
		vp.setWidth("100");
		vp.setHorizontalAlignment(HorizontalPanel.ALIGN_CENTER);
		Image imgitem = new Image(comunidade.getImgcomunidade());
		imgitem.setSize("62", "85");
		vp.add(imgitem);
		String titulo = cortaString(tituloComunidade(comunidade), 20);
		Hyperlink link = new Hyperlink(titulo, "main");
		link.setStyleName("linkItem");
		vp.add(link);

		link.addClickListener(new ClickListener() {
			public void onClick(Widget sender) {

				Window.alert("teste");
			}
		});

		return vp;
	}

	public static String tituloComunidade(Comunidade comunidade) {

		String titulo = comunidade.getNmcomunidade();
		if (titulo == null || titulo.equals("")
				|| LocaleInfo.getCurrentLocale().getLocaleName().equals("en")) {
			if (comunidade.getNmcomunidadeenglish() != null
					&& !(comunidade.getNmcomunidadeenglish().equals(""))) {
				titulo = comunidade.getNmcomunidadeenglish();
			}
		}
		return titulo;
	}

	public static VerticalPanel userImageNome(Usuario usuario) {

		VerticalPanel vp = new VerticalPanel();

		vp.setSpacing(5);
		vp.setWidth("100");
		vp.setHorizontalAlignment(HorizontalPanel.ALIGN_CENTER);
		Image img = new Image(usuario.getImgusuario());
		img.setSize("62", "85");
		vp.add(img);
		String titulo = Util.cortaString(usuario.getNmusuario(), 25);
		Hyperlink link = new Hyperlink(titulo, "main");
		link.setStyleName("linkItem");

		vp.add(link);

		link.addClickListener(new ClickListener() {
			public void onClick(Widget sender) {

				Window.alert("teste");
			}
		});

		return vp;
	}

	public static CooltRPCAsync getService() {

		CooltRPCAsync service = (CooltRPCAsync) GWT.create(CooltRPC.class);
		ServiceDefTarget endpoint = (ServiceDefTarget) service;
		String moduleRelativeURL = GWT.getModuleBaseURL() + "cooltRPC";
		endpoint.setServiceEntryPoint(moduleRelativeURL);
		return service;
	}
}
